float v accesse

Otázka od: kexo

5. 12. 2003 2:46

zdravim, v accessi robim taketo nieco:

CREATE TABLE tabulka (ID CHAR(10), cislo SINGLE);
nasledne spravim 2 inserty:
INSERT INTO tabulka VALUES ('aaa', 1.5)
INSERT INTO tabulka VALUES ('aaa', 1.3)

1.5 mi ulozi normalne, ale 1.3 mi ulozi ako 1,29999995231628...

kde je problem?
dik
kexo

(D7->ADO->Access2000)


Odpovedá: Jan Fiala

5. 12. 2003 6:02

5.12.2003 kexo:
> zdravim, v accessi robim taketo nieco:

> CREATE TABLE tabulka (ID CHAR(10), cislo SINGLE);
> nasledne spravim 2 inserty:
> INSERT INTO tabulka VALUES ('aaa', 1.5)
> INSERT INTO tabulka VALUES ('aaa', 1.3)

> 1.5 mi ulozi normalne, ale 1.3 mi ulozi ako 1,29999995231628...

> kde je problem?

Problem je v reprezentaci realneho cisla, ktere neni ukladano tak, jak
si jej napises, ale jako mantisa a exponent.
Pokud chces pouzivat cisla s pevnou desetinnou casti, podivej se na
nejake typy treba Currency, Money apod.

--
Jan Fiala
mailto:jan.fiala@wo.cz


Odpovedá: Lstiburek Pavel

5. 12. 2003 7:56

To je v poradku cislo 1.3 nema konecny zozvoj binarni soustave,
stejne cislo mas i Delphi.
Pokud se jedna o presne pocitani je nutno pouzit jiny ciselny typ,
musis pouzit Money (Access) a Currency (Delphi). Oba maji 4
desetinna mista, pokud jich potrebujes vic, tak to nevim
(hlavne na strane Delphi).

Pavel

> From: kexo [mailto:kexo@ynet.sk]
> zdravim, v accessi robim taketo nieco:
>
> CREATE TABLE tabulka (ID CHAR(10), cislo SINGLE);
> nasledne spravim 2 inserty:
> INSERT INTO tabulka VALUES ('aaa', 1.5)
> INSERT INTO tabulka VALUES ('aaa', 1.3)
>
> 1.5 mi ulozi normalne, ale 1.3 mi ulozi ako 1,29999995231628...
>
> kde je problem?
> dik
> kexo
>
> (D7->ADO->Access2000)